<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>05-短路运算符</title>
    <script>
        /* 
            短路运算符：
                1. && 短路与，如果表达式1为真，则返回表达式2；如果表达式1为假，则返回表达式1(值)
                2. || 短路或，如果表达式1为真，则返回表达式1；如果表达式1为假，则返回表达式2（值）
            语法案例：
                let result = 表达式1 && 表达式2；
            输入：表达式
            输出：
            输出： 表达式的值

            注意：
                1. 如果返回表达式1，则表达式2不再参与运算。
                2. 表达式1的值，会转化为布尔值，再参与表达式。
        */

        console.log(3 > 2 && 4+2);    //6
        console.log(3<2 && 4+2);    //false
        console.log('-----------------');
        console.log(3>2 || 4+2);    //true
        console.log(3<2 || 4+2);    //6

        console.log('--------案例-----------');
        let num = 0;
        console.log(3>5 && num++);   //false
        console.log(num);  //0

        console.log('------不是布尔值--------');
        console.log(123 && 2+5);   //7
        console.log('123' && 2+5);  //7
        console.log(null && 2+5);   //null

        console.log('-----------练习-------');
        console.log(123 && 456);  //456
        console.log(0 && 456);   //0
        console.log(0 && 1+2 && 456*56789);   //0
        console.log(3 && 456*56789);  //25895784
        console.log('1' && 1+2 && 456*567); //true
        console.log('' && 1+2 && 456*567);   // 空

        console.log(123 || 456);  //123
        console.log(123 || 456 +123);  //123
        console.log(0 || 4456 || 456 + 123);   //4456

        var num1 = 0;
        console.log(123 || num1++);  //123
        console.log(num1);  //0
    </script>
</head>
<body>
     
</body>
</html>